package com.saxion.controller;

import java.util.ArrayList;

import javassist.NotFoundException;

import com.saxion.dao.BestellingDao;
import com.saxion.dao.KlantDao;
import com.saxion.dao.ProductDao;
import com.saxion.model.Bestelling;
import com.saxion.model.Klant;
import com.saxion.model.Product;


public class SaktiehuisServiceImpl implements SaktiehuisService {

	public BestellingDao bestellingDao;
	public KlantDao klantDao;
	public ProductDao productDao;
	
	public SaktiehuisServiceImpl()
	{	
	}
	
	@Override
	public ArrayList<Product> getProductenlijst(String soort) {
		ArrayList<Product> productenlijst = new ArrayList<Product>();
		productenlijst = (ArrayList<Product>) productDao.getProductBySoort(soort);
		return productenlijst;
	}

	@Override
	public int nieuweBestelling(String naam) {
		Klant klant = klantDao.getKlant(naam);
		
		long id = 0;
		if(klant == null){
			id = klantDao.addKlant(naam);
			klant = klantDao.getKlant(naam);
		} else{
			
		}
		Bestelling b = new Bestelling(klant.getNaam());
		bestellingDao.addBestelling(b);
		return b.getBestelnummer();	
	}

	@Override
	public Bestelling getBesteloverzicht(String klantnaam,
			int bestelnr) {
		
		return bestellingDao.getBestellingById(bestelnr);
	}

	@Override
	public boolean bevestigBestelling(int bestelnr, String klantnaam) {
		return bestellingDao.bevestigBestelling(bestellingDao.getBestellingById(bestelnr));
	}
	
	@Override
	public void bestelProduct(int bestelnr,Product product,
			int aantal) {
		Bestelling b = bestellingDao.getBestellingById(bestelnr);
		b.addProduct(product, aantal);
		bestellingDao.updateBestelling(b);
		
	}

	public BestellingDao getBestellingDao() {
		return bestellingDao;
	}

	public void setBestellingDao(BestellingDao bestellingDao) {
		this.bestellingDao = bestellingDao;
	}

	public KlantDao getKlantDao() {
		return klantDao;
	}

	public void setKlantDao(KlantDao klantDao) {
		this.klantDao = klantDao;
	}

	public ProductDao getProductDao() {
		return productDao;
	}

	public void setProductDao(ProductDao productDao) {
		this.productDao = productDao;
	}

	@Override
	public void bestelProduct(int bestelnr, int productcode,
			int aantal) throws NotFoundException {
		Product product = null;
		product = productDao.getProductById(productcode);
		if(product != null){
			bestelProduct(bestelnr, product, aantal);
		}else{
			throw new NotFoundException("Kon Product niet vinden");
		}
		
	}

	public void addProduct(String beschrijving, double prijs, String soort) {
		productDao.addProduct(new Product(beschrijving, prijs, soort));
		
	}
		

	
	
	
}

